
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;


public class SenhaMyDAO implements Manipulador{
	private Connection conn;
	
	public void open() {
		this.conn = new ConnectionFactory().getConnection("jdbc:mysql://127.0.0.1/senha", "root", "banco123");
	}
	
	public void close() throws SQLException {
		this.conn.close();		
	}

	public List<Senha> getList() throws SQLException {
	
		PreparedStatement stmt = conn.prepareStatement("select * from senhas");
		
		ResultSet rs = stmt.executeQuery();
		
		List<Senha> senhas = new ArrayList<Senha>();
		
		while (rs.next()) {
			
			Senha senha = new Senha();
			
			senha.setSenha(rs.getString("senha_atual"));
			senha.setSenhaAntiga(rs.getString("senha_antiga"));
			
			Calendar data = Calendar.getInstance();
			data.setTime(rs.getDate("atualizacao"));
			senha.setAtualizacao(data);
			
			senhas.add(senha);
		}
		
		rs.close();
		stmt.close();
		
		return senhas;
	}
	
	public Senha getLast() throws SQLException {
		List<Senha> senhas = this.getList();
		
		return senhas.get(senhas.size() - 1);
	}
	
	public void grava(Senha senha) throws SQLException {
		String sql = "insert into senhas (senha_atual, senha_antiga, atualizacao) values (?, ?, ?)";
		
		try {
			PreparedStatement stmt = conn.prepareStatement(sql);
			
			stmt.setString(1, senha.getSenha());
			stmt.setString(2, senha.getSenhaAntiga());
			stmt.setDate(3, new Date(senha.getAtualizacao().getTimeInMillis()));
			
			stmt.execute();
			stmt.close();
			
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
}
